#ifndef _VENTANA_H_
#define _VENTANA_H_

#include <Gosu/AutoLink.hpp>
#include <Gosu/Gosu.hpp>

#include "caja.h"
#include "constantes.h"

/**
 * @class Ventana
 *
 * @brief La ventana de nuestro juego
 *
 * Implementa la clase abstracta Gosu::Window.
 *
 */

class Ventana : public Gosu::Window{
public:

    /// Constructor 
    Ventana();

    /// Destructor. Libera los recursos.
    ~Ventana();

    /// Fase de la lógica. Hace los cálculos.
    void update();

    /// Fase de dibujado. Se pintan los gráficos.
    void draw();

    /// Gestión de la entrada. Son llamados cuando se pulsa una tecla.
    void buttonDown(Gosu::Button B);

    /// Método para ocultar el cursor.
    bool needsCursor() const;

private:
    /// Imágenes para cada elemento
    Gosu::Image * fondo, * pala, * bola, * bloque;

    /// Fuente del juego
    Gosu::Font * fuente;

    /// Cajas de colisiones para la bola y la pala
    Caja cajaPala, cajaBola;

    /// Posibles estados del juego
    enum tipoEstado{ ESTADO_INICIAL, ESTADO_MOVIMIENTO };

    /// Estado del juego
    tipoEstado estadoActual;

    /// Matriz de bloques
    Bloque tablero[5][10];

    /// Número de bloques aún sin derribar
    float bloquesRestantes;

    /// Velocidad horizontal de la bola
    float bolaVelX;

    /// Velocidad vertical de la bola
    float bolaVelY;

    /// Puntuación 
    float puntuacion;

    /// Función que rellena el tablero inicial
    void rellenarTablero();   

};

#endif /* _VENTANA_H_ */
